#include "getmotion.h"
//该c文件是用于获取LCD屏幕的手势（上下左右），返回给主函数进行图片浏览的操作。

//获取屏幕左划右划操作
enum motion get_motion(void)
{
	// 1，打开触摸屏文件
	int tp = open("/dev/input/event0", O_RDONLY);
	

	// 2，读取触摸屏信息  input_event结构体在linux/input.h库中
	struct input_event buf; 
	   // int falg = 0;      //标记第一次按下的状态获取第一组x值
		//int falgy = 0;      //标记第一次按下的状态获取第一组y值
		//int touch = 0;     //标记用户屏幕无动作标志位
		int x1 = 0 , x2 = 0;       //x1为按下屏幕x的起始值 ，x2为松开屏幕x的结束值
		int y1 = 0 , y2 = 0;      //y1为按下屏幕x的起始值 ，y2为松开屏幕x的结束值
		
		int xdone = 0 ;
		int ydone = 0 ;
	while(1)
	{
		bzero(&buf, sizeof(buf));
		read(tp, &buf, sizeof(buf)); // 读取触摸屏数据，放到 buf 中
		
        
		// 读到按键事件（包括键盘、触摸屏的按压、鼠标的左右键……）
		if(buf.type == EV_KEY)
		{
			// 读到触摸屏的按压事件
			if(buf.code == BTN_TOUCH)
			{
				// 读到按下触摸屏
				if(buf.value > 0)
                      xdone = 0;
				      ydone = 0;

				// 读到松开触摸屏
				if(buf.value == 0)
					break;
			}
		}
		
		// 读到触摸屏的坐标事件
		if(buf.type == EV_ABS)
		{
	       if(xdone == 0 || ydone == 0)
		   {
			    if(buf.code == ABS_X )	
				{					
				   x1 = buf.value;//起始
			       xdone = 1;
				}
			    if(buf.code == ABS_Y)
				{
				   y1 = buf.value;//起始
				   ydone = 1;
				}
		   } 
		   if(xdone == 1 || ydone == 1)
		   {
			  if(buf.code == ABS_X )
				 x2 = buf.value;//结束
			  if(buf.code == ABS_Y)
				 y2 = buf.value; //结束  
		  } 
		
		}
		
	}

	printf("起始x1 = %d 结束x2 = %d\n",x1,x2);
	printf("起始y1 = %d 结束y2 = %d\n",y1,y2);
	
	
	int dif_x = x1 - x2 > 0 ? x1 - x2 : x2 - x1;
	int dif_y = y1 - y2 > 0 ? y1 - y2 : y2 - y1;
	
	
    if(x1 == 0 || x2 == 0)
	{
      return -1;
	}
	
	
	if (x1 > x2 && dif_x > dif_y)
	{
	   printf("向左滑动\n");
	   return left;
	}
    else if(x1 < x2 && dif_x > dif_y)
	{ 
       printf("向右滑动\n");
	   return right;
	}
	else if(y1 > y2 && dif_y > dif_x)
	{ 
       printf("向上滑动\n");
	   return up;
	}
	else if(y1 < y2 && dif_y > dif_x)
	{ 
       printf("向下滑动\n");
	   return down;
	}
	else 
	{

		return -1;
	}
	// 3，释放资源
	close(tp);
}